
/**
 * 菜单视图js
 */
Ext.namespace("oa.role.table");
Ext.namespace("oa.role.tree");

oa.role.tree.store = Ext.create('Ext.data.TreeStore', {
			id : 'tree_store',
			proxy : {
				type : 'ajax',
				url : '../../role/loadTree.do',
				reader : {
					type : 'json'
				}
			},
			root : {
				expanded : true
			},
			autoLoad : true
		});

oa.role.tree.view = Ext.create('Ext.tree.Panel', {
			columnWidth : 7 / 9,
			split : true,
			height : '150px',
			autoScroll : true,
			store : oa.role.tree.store,
			rootVisible : false, // 默认不显示根节点

			listeners : {
				'load' : function() {
					oa.role.tree.view.expandAll();
				}
			}

		})

/**
 * 新增表单
 */
oa.role.table.addForm = Ext.create('Ext.form.Panel', {
	width : 480,
	url : '../../role/addRole.do',
	frame : true,
	layout : 'anchor',
	defaults : {
		anchor : '100%'
	},
	defaultType : 'textfield',
	items : [{
				fieldLabel : '角色名称',
				name : 'name',
				allowBlank : false
			}, {
				fieldLabel : '角色概述',
				xtype : 'htmleditor',
				name : 'remarkUbb',
				width : 360,
				height : 150

			}, {
				bodyStyle : "background:transparent; border-width: 0px 0px 0px 0px;",
				xtype : 'panel',
				layout : 'column',
				width : 360,
				height : 150,
				defaults : {
					bodyStyle : "background:transparent; border-width: 0px 0px 0px 0px;"
				},
				items : [{
							columnWidth : 2 / 9,
							html : '菜单目录：'
						}, oa.role.tree.view]
			}],
	buttons : [{
		text : '提交',
		formBind : true, // only enabled once the form is valid
		disabled : true,
		handler : function() {
			var form = this.up('form').getForm();
			var funIdx = "";
			var arr = oa.role.tree.view.getChecked();
			for (var i = 0; i < arr.length; i++) {
				funIdx += arr[i].get("id") + ",";
			}
			var p = {
				"funIdx" : funIdx
			};
			if (oa.role.table.addFlag == 2) {
				var selectdata = oa.role.table.view.getSelectionModel()
						.getSelection();
				p.id = selectdata[0].get("id");
			}
			form.submit({
						waitMsg : '正在提交...',
						params : p,
						success : function(form, action) {
							oa.role.table.refresh();
							if (oa.role.table.addFlag == 2) {
								Ext.Msg.alert('提示', "修改成功",function(){
									oa.role.table.addView.hide();
								});
								
								return;
							}
							Ext.MessageBox.confirm('提示', '保存成功，是否继续添加？',
									function(obj) {
										if (obj == "yes") {
											form.reset();
										} else {
											oa.role.table.addView.hide();
										}
									});
						},
						failure : function(form, action) {
							Ext.Msg.alert('提示', action.result.msg);
						}
					});
		}
	}, {
		text : '重置',
		handler : function() {
			this.up('form').getForm().reset();
		}
	}]
})

/**
 * 新增视图
 */
oa.role.table.addView = Ext.create('widget.window', {
			title : '新增角色',
			closable : true,
			closeAction : 'hide',
			width : 500,
			minWidth : 150,
			modal : true,
			plain : true,// 对窗口进行美化,可以看到整体的边框
			bodyStyle : 'padding: 5px;',
			items : [oa.role.table.addForm]
		})

/**
 * 新增按钮事件
 */
oa.role.table.add = function() {
	oa.role.table.addFlag = 1;
	oa.role.table.addForm.getForm().reset();
	oa.role.tree.store.proxy.url = "../../role/loadTree.do";
	oa.role.table.refreshTree();
	oa.role.table.addView.show();
}

/**
 * 编辑按钮事件
 */
oa.role.table.edit = function() {
	oa.role.table.addFlag = 2;
	var data = oa.role.table.view.getSelectionModel().getSelection();
	if (data.length == 0 || data.length > 1) {
		Ext.Msg.alert("提示", "请选择一行数据");
		return;
	}
	var id = data[0].get("id");
	oa.role.tree.store.proxy.url = "../../role/loadTreeById.do?id=" + id;
	oa.role.table.refreshTree();
	oa.role.table.addView.show();
	oa.role.table.addForm.getForm().load({
				waitMsg : '正在加载数据',
				waitTitle : '提 示',
				url : '../../role/loadRole.do?id=' + id,
				method : 'GET',
				success : function(form, action) {
					// Ext.Msg.alert('提 示', '加载成功');
				}
			})
}

/**
 * 删除按钮事件
 */
oa.role.table.del = function() {
	var data = oa.role.table.view.getSelectionModel().getSelection();
	// alert(data);
	if (data.length == 0) {
		Ext.Msg.alert("提示", "请选择要操作的行");
		return;
	} else {
		Ext.Msg.confirm("请确认", "是否真的要删除数据？", function(button, text) {
					if (button == "yes") {
						var ids = [];
						Ext.Array.each(data, function(record) {
									var id = record.get('id');
									ids.push(id);

								});
						Ext.Ajax.request({
									url : '../../role/deleteRole.do',
									params : {
										idx : ids.join(',')
									},
									waitMsg : '正在删除...',
									method : 'POST',
									// timeout : 2000,//默认30秒
									success : function(response, opts) {
										Ext.Msg.alert("提示", "删除成功");
										oa.role.table.refresh();
									}
								})
					}
				})
	}
}

Ext.define('oa.role.table.model', {
			extend : 'Ext.data.Model',
			fields : [{
						name : 'id'
					}, {
						name : 'name'
					}, {
						name : 'remark'
					}]
		})
// 创建数据源
oa.role.table.store = Ext.create('Ext.data.Store', {
			model : 'oa.role.table.model',
			// 设置分页大小
			pageSize : 20,
			proxy : {
				type : 'ajax',
				url : '../../role/loadTable.do',
				reader : {
					// 数据格式为json
					type : 'json',
					root : 'list',
					// 获取数据总数
					totalProperty : 'totalCount'
				}
			},
			autoLoad : true
		});

// 创建grid
oa.role.table.selectModel = Ext.create('Ext.selection.CheckboxModel');
oa.role.table.view = Ext.create('Ext.grid.Panel', {
			store : oa.role.table.store,
			selModel : oa.role.table.selectModel,
			renderTo : "role_index",
			columns : [{
						text : 'ID',
						width : 120,
						dataIndex : 'id',
						sortable : true
					}, {
						text : '角色名称',
						width : 220,
						dataIndex : 'name',
						sortable : true
					}, {
						text : '角色概述',
						flex : 1.5,
						dataIndex : 'remark',
						sortable : true
					}],
			region : "center",
			split : true,
			width : "100%",
			height : "100%",
			columnLines : true,
			// 分页功能
			bbar : Ext.create('Ext.PagingToolbar', {
						store : oa.role.table.store,
						displayInfo : true,
						displayMsg : '显示 {0} - {1} 条，共计 {2} 条',
						emptyMsg : "没有数据"
					}),
			tbar : [{
						text : "新增",
						iconCls : 'Add',
						listeners : {
							"click" : oa.role.table.add
						}
					}, {
						text : "修改",
						iconCls : 'Applicationedit',
						listeners : {
							"click" : oa.role.table.edit
						}
					}, {
						text : "删除",
						iconCls : 'Delete',
						listeners : {
							"click" : oa.role.table.del
						}
					}]
		})

oa.role.table.refresh = function() {
	oa.role.table.store.load({
				scope : this,
				callback : function(records, operation, success) {
					console.log(records);
				}
			});
}

oa.role.table.refreshTree = function() {
	oa.role.tree.store.load({
				scope : this,
				callback : function(records, operation, success) {
					console.log(records);
				}
			});
}
